#tag Class
Class CFMutableSet
Inherits CFSet
	#tag Method, Flags = &h0
		Sub Add(value as CFType)
		  #if targetMacOS
		    declare sub CFSetAddValue lib CarbonLib (theSet as Ptr, value as Ptr)
		    
		    if not ( self = nil ) and not (value is nil) then
		      CFSetAddValue me.Reference, value.Reference
		    end if
		  #endif
		  
		End Sub
	#tag EndMethod

	#tag Method, Flags = &h0
		Sub Clear()
		  #if targetMacOS
		    declare sub CFSetRemoveAllValues lib CarbonLib (theSet as Ptr)
		    
		    if not ( self = nil ) then
		      CFSetRemoveAllValues me.Reference
		    end if
		  #endif
		  
		End Sub
	#tag EndMethod

	#tag Method, Flags = &h0
		Sub Constructor()
		  #if targetMacOS
		    declare function CFSetCreateMutable lib CarbonLib (allocator as Ptr, capacity as Integer, callbacks as Ptr) as Ptr
		    
		    const kCFTypeDictionaryKeyCallBacks = "kCFTypeDictionaryKeyCallBacks"
		    const kCFTypeDictionaryValueCallBacks = "kCFTypeDictionaryValueCallBacks"
		    
		    super.Constructor CFSetCreateMutable(nil, 0, Carbon.Bundle.DataPointerNotRetained("kCFTypeSetCallBacks")), true
		  #endif
		  
		End Sub
	#tag EndMethod

	#tag Method, Flags = &h0
		Sub Constructor(theSet as CFSet)
		  // Creates a mutable version of the given CFSet
		  
		  #if TargetMacOS
		    declare function CFSetCreateMutableCopy lib CarbonLib (allocator as Ptr, capacity as Integer, theSet as Ptr) as Ptr
		    
		    if not (theSet is nil) then
		      super.Constructor CFSetCreateMutableCopy(nil, 0, theSet.Reference), true
		    end if
		  #endif
		End Sub
	#tag EndMethod

	#tag Method, Flags = &h0
		Sub Remove(value as CFType)
		  #if targetMacOS
		    declare sub CFSetRemoveValue lib CarbonLib (theSet as Ptr, value as Ptr)
		    
		    if not ( self = nil ) and not (value is nil) then
		      CFSetRemoveValue me.Reference, value.Reference
		    end if
		  #endif
		  
		End Sub
	#tag EndMethod

	#tag Method, Flags = &h0
		Sub Replace(value as CFType)
		  #if targetMacOS
		    declare sub CFSetReplaceValue lib CarbonLib (theSet as Ptr, value as Ptr)
		    
		    if not ( self = nil ) and not (value is nil) then
		      CFSetReplaceValue me.Reference, value.Reference
		    end if
		  #endif
		  
		End Sub
	#tag EndMethod

	#tag Method, Flags = &h0
		Sub Value(assigns value as CFType)
		  #if targetMacOS
		    declare sub CFSetSetValue lib CarbonLib (theSet as Ptr, value as Ptr)
		    
		    if not ( self = nil ) and not (value is nil) then
		      CFSetSetValue me.Reference, value.Reference
		    end if
		  #endif
		  
		End Sub
	#tag EndMethod


	#tag ViewBehavior
		#tag ViewProperty
			Name="Count"
			Group="Behavior"
			Type="Integer"
			InheritedFrom="CFSet"
		#tag EndViewProperty
		#tag ViewProperty
			Name="Index"
			Visible=true
			Group="ID"
			InitialValue="-2147483648"
			InheritedFrom="Object"
		#tag EndViewProperty
		#tag ViewProperty
			Name="Left"
			Visible=true
			Group="Position"
			InitialValue="0"
			InheritedFrom="Object"
		#tag EndViewProperty
		#tag ViewProperty
			Name="Name"
			Visible=true
			Group="ID"
			InheritedFrom="Object"
		#tag EndViewProperty
		#tag ViewProperty
			Name="Super"
			Visible=true
			Group="ID"
			InheritedFrom="Object"
		#tag EndViewProperty
		#tag ViewProperty
			Name="Top"
			Visible=true
			Group="Position"
			InitialValue="0"
			InheritedFrom="Object"
		#tag EndViewProperty
	#tag EndViewBehavior
End Class
#tag EndClass
